Summary: This posting contains a list of Frequently Asked Questions (and their answers) about Oberon. It should be read before posting to the Comp.lang.oberon newsgroup.
Many FAQ lists, including this one, are available by anonymous ftp from rtfm.mit.edu in the /pub/usenet/news.answers directory.
Although I have aimed for accuracy, there is no guarantee that the information in this document is error-free. Neither the FAQ maintainer nor anyone else associated with this document assume any liability for the content or use of this document. If you find any errors, please report them to the address below.
Thanks to all who have contributed! Further additions, corrections, and suggestions are welcome.
Comp.lang.oberon Frequently Asked Questions: The Operating System
Copyright 1994 Michael Gallo
(c) 1994 Michael Gallo
This is one of three documents that attempt to answer somefrequently asked questions (FAQs) about Oberon. This text concerns the Oberon system, while the other two are about general topics and about Oberon the programming language.
THE OBERON SYSTEM
>From "The Oberon Guide"
For the present, we focus on the operating system Oberon, beginning with a brief overview of its design principles. The underlying dynamic model is extremely simple. There exists a single process acting as a common carrier of multiple tasks. This process repetitively interprets commands, which are the official entities of execution in Oberon. Commands are atomic actions operating on the global state of the system. Unlike customary interactive programs, they rigorously avoid direct dialogs with the system
user.
Besides "single-process multitasking" and execution of commands in lieu of programs, the Oberon System also features automatic garbage collection, dynamic loading and unloading of memory resident modules, text as a built-in abstract data type, tools for editing text and graphics, and program development tools.
>From "Oberon: A Glimpse at the Future"
The result is a system that provides efficiency and reliability rather than offering inflated size, which dramatically increases the probability of bugs and flaws.
What is most astonishing about Oberon is its smallness. The core operating system including the Oberon compiler occupies only 131 KB, which is smaller than most [Microsoft(tm)] Windows utilities.
OBERON SYSTEM 3 and GADGETS
>From "Oberon System 3 - A Realm of Persistent Objects"
We soon decided to realize our ideas by developing System3, an evolutionary version of the original Oberon system. From our vision and from examples like the one in Figure 1 it followed immediately that System 3 needs to be settled one important step beyond the ordinary state of object-oriented programming because it needs to be able to manage hundreds or even thousands of persistent objects and components that can appear in extensive variety, including at least character patterns, formulae, all kinds of
figures, pictures, gadgets and widgets. What was obviously needed is a central object management and some concept like object library.
>From "The GADGETS User Interface Management System"
The GADGETS user interface management system (UIMS) is a graphical user interface to the Oberon system. Although it is based on the representation model of windowing user interfaces such as X Windows and Presentation Manager, GADGETS is a conceptual departure from the conventional graphical user interface (GUI). Several features such as the separation of application code and user interface, the interactive modification of user interfaces while applications are executing, the automatic generation of defaul
t user interfaces for applications, and the simplification of user interface programming have been incorporated into GADGETS. The result is smaller, easier to build application programs with a high level of integration between each other and the Oberon system. The GADGETS UIMS is extensible and provides a prototyping environment for alternative man-machine interaction styles. The high level of integration of GADGETS with the Oberon system makes the addition of graphical !
user interfaces to existing Oberon applications a relatively easy task.
Regarding the Leda document preparation system, oswald@inf.ethz.ch (Erich Oswald) wrote on 15 Aug 1994:
There's nothing more to the demo version of Leda than what you get with System 3 release 1.5. Since we've given the sources away to A+L for further development, we're not investing time in Leda any more (except maybe for bug fixes).
The full version of Leda can be ordered from: A+L AG, Daederiz 61, CH-2540 Grenchen, Fax +41/65/52 03 79
DIFFERENT VERSIONS OF OBERON
"Is Oberon System version X compatible with version Y?"
According to templ@inf.ethz.ch (Dr. Josef Templ),
The Oberon ancestry is as follows: Oberon = V1 ( V2 V4 | System3 )
The main difference between V1 and V2 is the introduction of an extensible text model and the text editor Write. The main difference between V2 and V4 is the unification of the two text editors Edit and Write. In order to avoid confusion with System3, the direct successor of V2 is not named V3 but V4. The main difference between V2 and System3 is that System3 introduced (a year later) a more general object model (not restricted to text elements) and the notion of persistent object libraries. Many prog
rams port between the different versions without any changes. Some programs need simple textual substitutions, and only very few need a considerable amount of re-engineering (e.g. Write, Script).
N.B., ETH currently supports version 4 and System 3 only.
"What version of the Oberon language is implemented in Oberon System X?"
On 20 May 1994, templ@inf.ethz.ch (Dr. Josef Templ) wrote:
All Oberon system versions are implemented with the (pure) Oberon message records and handlers, not with Oberon-2 methods. This is because the viewer system, where messages are mainly used, need utmost flexibility and extensibility. Oberon-2 methods trade flexibility for speed. Most compilers distributed with those systems, however, support the Oberon-2 extensions, in particular the Windows version, all the Unix versions, and hopefully in the near future the Mac version.
"How can I read these AsciiCoder files that people keep posting?"
The source code for the AsciiCoder is available from ETH's Oberon archive in /pub/Oberon/Tools.
ETHOS
(* Can someone pass along a description of ETHOS? Thanks! *)
HERMES and CONCURRENT OBERON
>From Hermes: Supporting object oriented distributed programming in a network of personal workstations
With the objective to investigate support for distributed programming according to this principle, we implemented the Hermes operating system which is described in this thesis. Hermes supports interprocess communication and remote installation of programs that can be invoked over the network transparently but lacks specialized application-oriented packages. The provided primitives combine flexibility with high level functionality in a balanced way, so that they can be diectly used to program simple inte
ractions over the network in a simple way and still serve as a foundation upon which more elaborate support for specific application classes can be built.
It runs on top of the Concurrent Oberon system, a special version of the original Oberon system we have implemented for the Ceres1 and Ceres2 personal workstations.
>From "Adding Concurrency to the Oberon System"
Concurrency was not supported in the original Oberon system. We have argued that, although the Oberon experience has demonstrated that concurrency is not needed to support interactive applications in a system with a multiple window user interface, concurrency is nonetheless desirable in a single user system. We have demonstrated that it can be introduced without a significant increase in size or complexity by developing the Concurrent Oberon system. Since all interfaces remained the same or were extended,
the semantics of the Oberon loop were preserved. Concurrent Oberon is completely compatible with the standard system [version 4] and all applications run without change.
AVAILABILITY
The original project was launched and carried out by N. Wirth and J. Gutknecht for the Ceres workstation. Since then, ETH has ported versions of their Oberon system to many other platforms available from their Oberon archive.
Markus Daetwyler (mdaetwyl@iiic.ethz.ch) and Marc Sperisen (msperise@iiic.ethz.ch) have ported ETH's Oberon to the Linux operating system. D. Steiner has ported ETH's Oberon to OS/2. These ports are available from the Swiss Oberon Users' Group archive site.
Taylor Hutt has ported a DPMI compliant version of Oberon System (ver. 2). It can be found by anonymous from ftp.clark.net:/pub/thutt/distrib.
BIBLIOGRAPHY
Sources cited in the FAQ list that are not listed in the following bibliography are electronically available in PostScript and/or Oberon text formats from ETH's Oberon archive.
"Designing a System from Scratch" by N. Wirth; Structured Programming; 10,1 (January 1989) 10-18.
"The Oberon System" by N. Wirth and J. Gutknecht; Software: Practice and Experience; 19,9 (September 1989) 857-893.
The Oberon System: User Guide and Programmer's Manual by M. Reiser; ACM Press; 1992. This was reviewed in Computing Reviews articles 9109-0679, 9209-0651, 9209-0652, and 9207-0443.
Project Oberon: The Design of an Operating System and Compiler by N. Wirth and J. Gutknecht; ACM Press 1992.
"Oberon: A Glimpse at the Future" by Dick Pountain; BYTE volume 18 number 6 (May 1993).
"Implementing an Operating System on Top of Another" by M. Franz; Software: Practice and Experience; 23,6 (June 1993) 677-692.
"Adding Concurrency to the Oberon System" by Spiros Lalis and Beverly Sanders; Proceedings of the Conference on Programming Languages and System Architectures. J. Gutknecht, ed. Lecture Notes in Computer Science 782. 1994.
Insight ETHOS: On Object-Orientation on Operating Systems by Clemens A. Szyperski; Swiss Federal Institute of Technology (ETH Zrich); Dissertation #9884 (1992); ISBN 3 7281 1948 2.
Hermes: Supporting object oriented distributed programming in a network of personal workstations by Spyridon Gerassimos Lalis; Swiss Federal Institute of Technology (ETH Zrich); Dissertation #10736 (1994).
"Oberon System 3" by Johannes L. Marais; Dr. Dobb's Journal (October 1994).